package collection;

import java.util.*;

/**
 * @author Cheng Jun
 * Description: 请输入描述
 * @version 1.0
 * @date 2022/1/1 23:07
 */
public class HashSetStudy {

    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        char[] test1 = new char[]{'(', '\u0000', ')'};
        char[] test2 = new char[]{'(', '\u0000', ')'};
        char[] test3 = new char[]{'\u0000', '(', ')'};
        set.add(new String(test1));
        set.add(new String(test2));
        set.add(new String(test3));

        Set<Deque<Integer>> numSet = new HashSet<>();
        Deque<Integer> deque = new LinkedList<>();
        deque.add(1);
        numSet.add(deque);
        // 下面代码 会造成死循环，原因是 set里面的 元素被修改了pollLast()，同时修改引起了 元素的hashCode改变
        // 导致 iterator.remove()时，HashMap的 hash算法 计算 Node位置和 元素本来的位置不一致。
        // while (!numSet.isEmpty()) {
        //     Iterator<Deque<Integer>> iterator = numSet.iterator();
        //     while (iterator.hasNext()) {
        //         Deque<Integer> next = iterator.next();
        //         Integer num = next.pollLast();
        //         System.out.println(num);
        //         if (next.isEmpty()) {
        //             iterator.remove();
        //         }
        //     }
        // }
    }
}
